#!/bin/bash

# 设置工作目录
WORK_DIR="/root/GPT-SoVITS"
FRPC_DIR="/root/frp_ChmlFrp-0.51.2_linux_amd64"

# 停止所有相关进程
stop_services() {
    echo "停止现有服务..."
    pkill -f "python webui.py"
    pkill -x "frpc"
    sleep 2
}

# 安装和配置frpc
setup_frpc() {
    echo "开始安装和配置frpc..."
    
    # 下载frpc
    echo "步骤1: 下载frpc..."
    cd /root
    wget https://chmlfrp.cn/dw/ChmlFrp-0.51.2_linux_amd64.tar.gz
    
    # 解压文件
    echo "步骤2: 解压文件..."
    tar -zxf ChmlFrp-0.51.2_linux_amd64.tar.gz
    
    # 复制配置文件
    echo "步骤3: 复制配置文件..."
    cp /gsv/frpc.ini "$FRPC_DIR/frpc.ini"
    
    # 清理下载文件
    rm ChmlFrp-0.51.2_linux_amd64.tar.gz
    
    echo "frpc安装和配置完成！"
}

# 检查并重启frpc
restart_frpc() {
    echo "检查frpc安装..."
    
    # 检查frpc是否已安装
    if [ ! -d "$FRPC_DIR" ]; then
        echo "未检测到frpc，开始安装..."
        setup_frpc
    fi
    
    echo "检查frpc进程..."
    if pgrep -x "frpc" > /dev/null; then
        echo "发现已运行的frpc进程，正在重启..."
        pkill -x "frpc"
        sleep 2
    fi
    
    cd "$FRPC_DIR"
    nohup ./frpc -c frpc.ini > frpc.log 2>&1 &
    sleep 3
    
    if pgrep -x "frpc" > /dev/null; then
        echo "frpc启动成功！"
    else
        echo "错误: frpc启动失败"
        exit 1
    fi
}

# 启动WebUI
start_webui() {
    cd "$WORK_DIR"
    
    # 启动 WebUI
    echo "正在启动 WebUI..."
    echo "{}" > ~/GPT-SoVITS/tools/i18n/locale/en_US.json
    source activate GPTSoVits
    cd ~/GPT-SoVITS/
    nohup python webui.py zh_CN > webui.log 2>&1 &
    
    # 等待WebUI启动
    sleep 5
    
    # 检查是否成功启动
    if pgrep -f "python webui.py" > /dev/null; then
        echo "WebUI启动成功！"
    else
        echo "错误: WebUI启动失败，请检查 webui.log"
        tail -n 20 webui.log
        exit 1
    fi
}

# 主程序
echo "正在启动 GPT-SoVITS 服务..."
echo "====================================="

# 先停止所有服务
stop_services

echo "步骤1: 配置并启动frpc穿透服务..."
restart_frpc

echo -e "\n步骤2: 启动GPT-SoVITS WebUI..."
start_webui

# 显示访问地址
echo -e "\n====================================="
echo "服务启动完成！可通过以下地址访问："
echo "主界面: ld.frp.one:49874 (对应 127.0.0.1:9874)"
echo "其他接口: "
echo "ld.frp.one:39873 (对应 127.0.0.1:9873)"
echo "ld.frp.one:39872 (对应 127.0.0.1:9872)"
echo "ld.frp.one:39871 (对应 127.0.0.1:9871)"
echo "====================================="

# 保持脚本运行并显示日志
echo -e "\n服务正在运行中... (按 Ctrl+C 停止)"
tail -f webui.log